package com.yusvn.scm.goods.base.service;

import java.util.List;

import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.yusvn.scm.common.BaseService;
import com.yusvn.scm.common.constant.Const;

/**
 * SCM所需基础信息
 * @author liugz
 *
 */
public class ScmBaseService extends BaseService {

	//基础数据通用查询 - 单个
	public Record getBase(Kv kv) {
		kv.set("cid", getCid()); //账套id
		
		//获取sql模板名
		String scmTemplate = kv.getStr("scmTemplate");
		
		return Db.use(Const.SCMDB).template("scmBase."+scmTemplate, kv).findFirst();
	}
	
	//基础数据通用查询 - 集合
	public List<Record> getBaseList(Kv kv) {
		kv.set("cid", getCid()); //账套id
		
		//获取sql模板名
		String scmTemplate = kv.getStr("scmTemplate");
		
		return Db.use(Const.SCMDB).template("scmBase."+scmTemplate, kv).find();
	}

	//基础数据通用查询 - 分页集合
	public Page<Record> getBasePage(Kv kv) {
		kv.set("cid", getCid()); //账套id
		
		//获取sql模板名
		String scmTemplate = kv.getStr("scmTemplate");
		
		return Db.use(Const.SCMDB).template("scmBase."+scmTemplate, kv).paginate(getPage(kv), getLimit(kv));
	}
	
	
	//查询条件 - 商品(检索商品名称)
	public Page<Record> spmc(Kv kv) {
		kv.set("cid", getCid()); //账套id
		System.out.println("getCid"+getCid());
		kv.set(selectPz());
		kv.set("qx_pp", getPpqx(kv.getStr("userCode"))); //用户品牌权限
//		Record first = Db.use(Const.SCMDB).findFirst("select pz1,pz2 from scm_pzbh where bh = 'scm_buhuo_sptbsx'");
//		kv.set("attribpz2",first.get("pz2").toString());
//		kv.set("attribdefpz1",first.get("pz1").toString());

		//分割搜索词code，++ 符号前为商品搜索词，后面部分为供应商编号
		String code = kv.getStr("code");
		if(StrKit.notBlank(code)) {
			String[] codeArr = code.split("\\++"); // 分隔符为++，+号需要转义所以加\\
			if(codeArr.length>0) {
				kv.set("code", codeArr[0]); //商品搜索词
			}
			if(codeArr.length>1) {
				kv.set("gys", codeArr[1]); //供应商搜索词
			}
			//System.out.println(kv);
		}
		
		return Db.use(Const.SCMDB).template("scmBase.spmc", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 商品（确定某个商品是否存在）
	public Record getProduct(Kv kv) {
		kv.set("cid", getCid()); //账套id
		//获取商品图片地址
		kv.set("goodsimg", getGoodsimg());
		return Db.use(Const.SCMDB).template("scmBase.getProduct", kv).findFirst();
	}
	
	//查询条件 - 商品
	public Page<Record> product(Kv kv) {
		kv.set("cid", getCid()); //账套id
		//获取商品图片地址
		kv.set("goodsimg", getGoodsimg());
		return Db.use(Const.SCMDB).template("scmBase.product", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//获取商品属性定义（编号及是否必填、排序）
	public List<Record> spsxdy(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.spsxdy", kv).find();
	}

	//获取商品属性默认值
	public Record spsxmrz(Kv kv) {
		kv.set("cid", getCid()); //账套id
		
		//取商品属性默认值
		Record rec = Db.use(Const.SCMDB).template("scmBase.spsxmrz", kv).findFirst();
		
		//取商品默认尺码组的尺码
		kv.set("spcmz", rec.get("spcmz"));
		List<Record> cmList = Db.use(Const.SCMDB).template("scmBase.productSize", kv).find();
		rec.set("spcm", cmList);
		
		//取商品动态属性默认值
		List<Record> dtsxlist = Db.use(Const.SCMDB).template("scmBase.dtsxmrz", kv).find();
		rec.set("dtsxlist", dtsxlist);
		
		return rec;
	}

	//获取商品动态属性默认值
	public Record spsxmrzDt(Kv kv) {
		kv.set("cid", getCid()); //账套id
		
		//取商品属性默认值
		Record rec = Db.use(Const.SCMDB).template("scmBase.spsxmrz", kv).findFirst();
		
		//取商品默认尺码组的尺码
		kv.set("spcmz", rec.get("spcmz"));
		List<Record> cmList = Db.use(Const.SCMDB).template("scmBase.productSize", kv).find();
		
		rec.set("spcm", cmList);
		
		return rec;
	}
	
	//获取商品属性关联关系 （大类-中类-小类）
	public Page<Record> refAttrib(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.refAttrib", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 商品属性(品牌、年份、季节、大类、中类、小类、)
	public Page<Record> productAttr(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.productAttr", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 商品颜色
	public Page<Record> productColor(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.productColor", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 商品尺码
	public Page<Record> productSize(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.productSize", kv).paginate(getPage(kv), getLimit(kv));
	}

	//查询条件 - 商品尺码组
	public Page<Record> productSizeg(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.productSizeg", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 客户
	public Page<Record> agent(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.agent", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 客户类型
	public List<Record> khlx(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.khlx", kv).find();
	}
	
	//查询条件 - 总部的仓库
	public Page<Record> zbck(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.zbck", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 总部发货仓库
	public Page<Record> fhck(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.fhck", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 供应商
	public Page<Record> supplier(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.supplier", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//查询条件 - 内部员工(客服业务员、区域经理、店员、店长)
	public Page<Record> personnel(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.personnel", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//单个货号信息
	public Record getProductById(Kv kv) {
		kv.set("cid", getCid()); //账套id
		//获取商品图片地址
		kv.set("goodsimg", getGoodsimg());
		return Db.use(Const.SCMDB).template("scmBase.getProductById", kv).findFirst();
	}
	
	//单个客户信息
	public Record getAgentById(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.getAgentById", kv).findFirst();
	}
	
	//查询某个商品有的尺码信息
	public List<Record> getProductSizes(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.getProductSizes", kv).find();
	}
	
	//查询某个商品有的颜色信息
	public List<Record> getProductColors(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.getProductColors", kv).find();
	}

	//查询某个商品的条码信息
	public List<Record> getProductSku(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.getProductSku", kv).find();
	}

	//查询条件 - 仓店
	public Page<Record> store(Kv kv) {
		kv.set("cid", getCid()); //账套id
		return Db.use(Const.SCMDB).template("scmBase.store", kv).paginate(getPage(kv), getLimit(kv));
	}
	
	//获取版本号
	public Record getbbh() {
	
		//获取最近版本号
        Record rec = Db.use().templateByString("SELECT MAX(b.dict_data_name) AS bbh FROM sys_dictionary a,"
        		+ "sys_dictionary_data b WHERE a.dict_id=b.dict_id AND a.dict_code='bbh'").findFirst(); 
			
        return rec;
	}
}
